Soru & Cevap

Intent nesnesi ile custom yapıdaki ArrayList'i aktarma

05.12.2013 - 02:30

Merhaba arkadaşlar UserData typesinde bir ArrayListim var.Bu verileri intent nesnesi ile diğer sayfaya aktarmak istiyorum.Önceden aktarma sorunsuzdu fakat bu işin içinde serverden gelen byte array resim datasını transfer etmeek girince sıkıntılar çıkmaya başladı.

Sınıfıma Parcelable ara yüzünü dahil ettim kodlamamda şu şekilde

 

    public UserData(Parcel in){
        this.usid=in.readString();
        this.name=in.readString();
        this.presenceStatus=in.readString();
        this.clid=in.readString();
        this.mail=in.readString();
        this.telephone=in.readString();
        this.department=in.readString();
        this.position=in.readString();
        this.kisaKod=in.readString();
        this.picdt = new byte[in.readInt()];
        in.readByteArray(this.picdt);
    }

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeString(usid);
        dest.writeString(name);
        dest.writeString(presenceStatus);
        dest.writeString(clid);
        dest.writeString(mail);
        dest.writeString(telephone);
        dest.writeString(department);
        dest.writeString(position);
        dest.writeString(kisaKod);
        dest.writeInt(picdt.length);
        dest.writeByteArray(picdt);
    }
    
    public static final Parcelable.Creator<UserData> CREATOR = new Parcelable.Creator<UserData>() {
        @Override
        public UserData createFromParcel(Parcel in) {
            return new UserData(in);
        }

        @Override
        public UserData[] newArray(int size) {
            return new UserData[size];
        }
    };

dest.writeInt(picdt.length); kısmına düşünce nullpointerexception basıp atıyor.kafayı yedirtti bana bilgisi olan varsa el atabilir mi başka ne alternatifte yollatabilirim bunu 

15 Görüntülenme

3 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

picture-3606-1408610132.jpg
cgural
05.12.2013 - 03:51

Bitmap olarak parsellemekten çok daha verimli bir çözüm bulmuşsunuz base64 ile.

Kolaylıklar...

picture-1372-1408467635.jpg
ahmtbrk
05.12.2013 - 03:47

örnek için teşekkür ederim sorunu şu alternatif yolla çözdüm.Serverdan bana data düştüğünde base64 string olarak geliyordu ben bunu decode edip sınıfa byte array olarak yüklemeye çalışıyordum.

Onun yerine datayı base64.decode etmeden sınıfa string olarak yükleyip sıradan stringleri parcel eder gibi ettim.İşime yarayan yerdede decode edip bitmapa çevirip bastım.

Teşekkürler iyi çalışmalar Caner Bey

picture-3606-1408610132.jpg
cgural
05.12.2013 - 03:24

Yapılandırıcı metottaki

[code]this.picdt = new byte[in.readInt()];[/code]

kısmında, in.readInt() ile Parcel'in (in) o an bulunan pozisyonundaki Integer veriyi okuyorsunuz ama  bu değer ne döndürüyor? Bu yüzden picdt için düzgün bir ByteArray alan açamıyor gibi duruyor.

Şuradaki örnekte BitmapDrawable biçiminde bir alan tutan örnek anlatılıyor.